Encoding of a serial data bit stream using block codes, particularly channel encoding, can be effected by dividing the data bit stream into words or blocks, wherein there is added to each block a number of check bits which are solely dependent on the data bits within the block.
Encoding is often effected by serial-parallel conversion at the input of an encoder, followed by the performance of logic operations, i.e. the actual encoding process in which the check bits are added. Finally, parallel-serial conversion is effected at the encoder output. A clock pulse is used for triggering the read-in of the serial bit stream at the input, i.e. read-in occurs at each positive or negative edge of the clock pulse.
However, it is difficult to implement block coding at high transmission speeds, for instance in optical high speed systems in the Gbit/s range. It is particularly difficult to implement a simple encoding logic operation and synchronising logic operation which will allow high speeds. Serial-parallel conversion and parallel-serial conversion respectively can also constitute limiting factors. Furthermore, there is required an encoding process which is not highly demanding with respect to lower and upper cut-off frequencies in regard of amplifiers included in the transmission system.
Among other things, this requires encoding that will retain a d.c. stability, particularly in the case of optical high-speed transmissions, i.e. encoding which contains roughly the same number of ones as zeros, and encoding where the maximum number of consecutive symbols of the same kind, for instance ones or zeros, is low.